package com.yfqy.app.modules.order.service;

import com.github.pagehelper.PageInfo;
import com.yfqy.app.domain.vo.ResultVO;
import com.yfqy.app.modules.order.dto.OrderCreateRequest;
import com.yfqy.app.modules.order.dto.OrderQueryDTO;
import com.yfqy.app.modules.order.vo.OrderCreateResultVO;
import com.yfqy.app.modules.order.vo.OrderInfoVO;

public interface OrderService {

    /**
     * 用户同统一下单接口
     *
     * @param orderCreateRequest
     * @return
     */
    OrderCreateResultVO createOrder(OrderCreateRequest orderCreateRequest);

    /**
     * 订单详情
     *
     * @return
     */
    OrderInfoVO detail(Long id);


    /**
     * 取消订单，开启全新的事务
     *
     * @return
     */
    ResultVO<Void> cancel(Long orderId);

    /**
     * 用户自己的订单列表
     *
     * @param orderQueryDTO
     * @return
     */
    PageInfo<OrderInfoVO> getOrders(OrderQueryDTO orderQueryDTO);

    /**
     * 取消订单已支付的订单-申请退款
     */
    ResultVO<Void> applyRefund(Long orderId);
}
